home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1993 July / InfoMagic USENET CD-ROM July 1993.ISO / sources / unix / volume15 / monthtool2 / part01 next >
Encoding:
Internet Message Format  |  1988-06-01  |  20.4 KB

  1. Subject:  v15i027:  Monthly apointment calendar, for Suns, Part01/02
  2. Newsgroups: comp.sources.unix
  3. Sender: sources
  4. Approved: rsalz@uunet.UU.NET
  5.  
  6. Submitted-by: cognos!sarahm
  7. Posting-number: Volume 15, Issue 27
  8. Archive-name: monthtool2/part01
  9.  
  10. This is the second version of Monthtool -- a visual calendar and appointment
  11. manager.  It works on Sun systems with SunOS 3.2 or greater.  This version
  12. offers a few bug fixes and some significant new features -- including weekly
  13. appointments, automatic save on close, and different date borders based on 
  14. the types of appointments.  Enough has changed to warrant posting the whole
  15. thing again, not just fixes.  
  16.  
  17. Thanks to all the people who have been mailing in suggestions and thanks 
  18. very much to all the people who have been mailing actual code improvements!
  19.  
  20. Sarah Metcalfe         decvax!utzoo!dciem!nrcaer!cognos!sarahm
  21. Cognos Incorporated    P.O. Box 9707, 3755 Riverside Drive, 
  22.                        Ottawa, Ontario, CANADA  K1G 3Z4
  23.                        (613) 738-1440
  24.  
  25.  
  26. [  I repacked this into two shar's -- r$ ]
  27.  
  28. #! /bin/sh
  29. # This is a shell archive.  Remove anything before this line, then unpack
  30. # it by saving it into a file and typing "sh file".  To overwrite existing
  31. # files, type "sh file -c".  You can also feed this as standard input via
  32. # unshar, or by typing "sh <file", e.g..  If this archive is complete, you
  33. # will see the following message at the end:
  34. #        "End of archive 1 (of 2)."
  35. # Contents:  Makefile README monthtool.1 monthtool.font.uu monthtool.h
  36. # Wrapped by rsalz@fig.bbn.com on Thu Jun  2 15:04:54 1988
  37. PATH=/bin:/usr/bin:/usr/ucb ; export PATH
  38. if test -f 'Makefile' -a "${1}" != "-c" ; then 
  39.   echo shar: Will not clobber existing file \"'Makefile'\"
  40. else
  41. echo shar: Extracting \"'Makefile'\" \(670 characters\)
  42. sed "s/^X//" >'Makefile' <<'END_OF_FILE'
  43. XFONTDIR        = /system/util/monthtool
  44. INSTALLDIR    = /usr/local/bin
  45. MANDIR        = /usr/local/man/man1
  46. LIBS          = -lm -lsuntool -lsunwindow -lpixrect
  47. CFLAGS        = -O
  48. PROG          = monthtool 
  49. MAN           = monthtool.1
  50. X
  51. monthtool:      monthtool.font monthtool.o
  52. X    cc -o $(PROG) monthtool.o $(LIBS)
  53. X
  54. monthtool.o:    monthtool.c monthtool.h 
  55. X    cc $(CFLAGS) -DFONTDIR="\"$(FONTDIR)\"" -c monthtool.c
  56. X
  57. monthtool.font: monthtool.font.uu 
  58. X    uudecode monthtool.font.uu
  59. X    install -c -m 644 monthtool.font $(FONTDIR)
  60. X
  61. install:        $(PROG) $(MAN)
  62. X    install -s -m 555 $(PROG) $(INSTALLDIR)
  63. X    install -c -m 644 monthtool.1 $(MANDIR)
  64. X
  65. clean:    
  66. X    rm -f monthtool.o core 
  67. END_OF_FILE
  68. if test 670 -ne `wc -c <'Makefile'`; then
  69.     echo shar: \"'Makefile'\" unpacked with wrong size!
  70. fi
  71. # end of 'Makefile'
  72. fi
  73. if test -f 'README' -a "${1}" != "-c" ; then 
  74.   echo shar: Will not clobber existing file \"'README'\"
  75. else
  76. echo shar: Extracting \"'README'\" \(1282 characters\)
  77. sed "s/^X//" >'README' <<'END_OF_FILE'
  78. This is version 2 of Monthtool. Some significant new features 
  79. have been added, thanks to suggestions from people all over!
  80. X
  81. X--------
  82. Monthtool is a visual direct manipulation "month-at-a-glance"
  83. type  calendar  and  reminder  system  using Sunview.  It is
  84. based on work done by Mike Essex on the vcal group  of  pro-
  85. grams.  Some ideas on setting up the interface were borrowed
  86. from the calctool program by Rich Burridge.
  87. X
  88. This program works on Sun  3  systems  only.    To  install:
  89. check  the  Makefile  and change the INSTALLDIR, MANDIR, and
  90. XFONTDIR Make macros to the following directories, respective-
  91. ly:  the  directory  where Monthtool is to be installed, the
  92. directory where the man page is to  go,  and  the  directory
  93. where  the  specialized font is to be installed.
  94. Then, simply do  a  "make  install",  followed  by  a  "make
  95. clean", if required.
  96. X
  97. I hope it turns out to  be  useful.   Improvements  and  bug
  98. fixes most welcome.
  99. X
  100. X
  101. X                                        Regards, 
  102. X                                           Sarah Metcalfe
  103. X
  104. X______
  105. X
  106. Sarah Metcalfe         decvax!utzoo!dciem!nrcaer!cognos!sarahm
  107. Cognos Incorporated    P.O. Box 9707, 3755 Riverside Drive, 
  108. X                       Ottawa, Ontario, CANADA  K1G 3Z4
  109. X                       (613) 738-1440
  110. END_OF_FILE
  111. if test 1282 -ne `wc -c <'README'`; then
  112.     echo shar: \"'README'\" unpacked with wrong size!
  113. fi
  114. # end of 'README'
  115. fi
  116. if test -f 'monthtool.1' -a "${1}" != "-c" ; then 
  117.   echo shar: Will not clobber existing file \"'monthtool.1'\"
  118. else
  119. echo shar: Extracting \"'monthtool.1'\" \(6640 characters\)
  120. sed "s/^X//" >'monthtool.1' <<'END_OF_FILE'
  121. X./" @(#)monthtool.1    5.1 2/20/88
  122. X.TH MONTHTOOL 1 "4 January 1988"
  123. X.SH NAME
  124. monthtool \- a mouse-oriented direct manipulation calendar and 
  125. reminder organizer
  126. X.SH SYNOPSIS
  127. X.B monthtool
  128. X.SH DESCRIPTION
  129. X.sp
  130. X.TP
  131. X.B Overview
  132. X.br
  133. X.sp
  134. X\fIMonthtool\fR
  135. displays a Suntools-oriented calendar of any month of any year and
  136. allows the user to browse the days of that month, and
  137. to schedule and recall reminders for that day.
  138. X.br
  139. X.TP
  140. X.B Windows
  141. X.sp
  142. Month Name Window:
  143. X.br
  144. The name and year of the displayed calendar is indicated.
  145. Two arrow buttons allow the user to move to other months (up arrow moves
  146. to the previous month, down arrow to the following month).  A button
  147. labelled "Today" moves the calendar to the current month of the current
  148. year, highlights today's date in the calendar, and displays today's reminders.
  149. X.sp
  150. Dates Window:
  151. X.br
  152. The days of the month are shown in calendar format.  
  153. When the user clicks on a date in this window, that date is highlighted
  154. and the reminders for that particular day are shown in the Reminder Window.
  155. Days that have (most types of) reminders associated with them have a bolder
  156. border.
  157. X.sp
  158. Reminder Type Buttons Window:
  159. X.br
  160. XFive push-buttons indicating the types of reminders are shown.
  161. Clicking on one type will set the reminder that currently has
  162. the insertion caret on it (in the Reminder Window) to that type. 
  163. X.sp
  164. Reminder Window: 
  165. X.br
  166. Reminders for the currently highlighted date are shown.  Indicators
  167. of the type of each reminder are indicated at the beginning of each
  168. reminder line.  Reminders may be added, deleted or modified, using the
  169. standard 
  170. X\fItextedit\fR 
  171. features.  A type may be set by positioning the insertion
  172. caret on the reminder and clicking on the required type in the
  173. Reminder Type Buttons Window.
  174. X.br
  175. X.TP
  176. X.B Reminder Types
  177. X.br
  178. X.sp
  179. Reminders may be one of five types:
  180. X.sp
  181. This day only reminders:
  182. X.br
  183. These reminders are one time only events, such as appointments. 
  184. A reminder of this type has a black box at the front of the message.
  185. When one of these is associated with a given day, the border of that
  186. date in the calendar will be made bolder, as an indicator.
  187. X.sp
  188. Yearly reminders:
  189. X.br
  190. Reminders that happen once a year, such as birthdays. 
  191. A reminder of this type has a hollow box containing a "Y" at the 
  192. front of the message.
  193. When one of these is associated with a given month and day, the border of that
  194. date in the calendar will be made bolder, as an indicator.
  195. X.sp
  196. Monthly reminders:
  197. X.br
  198. Reminders that happen once a month, such as loan payments. 
  199. A reminder of this type has a hollow box containing a "M" at the 
  200. front of the message.
  201. When one of these is associated with a given date, the border of that
  202. date in the calendar will be made bolder, as an indicator.
  203. X.sp
  204. Weekly reminders:
  205. X.br
  206. Reminders that happen once a week, such as weekly status meetings. 
  207. A reminder of this type has a hollow box containing a "W" at the 
  208. front of the message.
  209. When one of these is associated with a given date, the border of that
  210. date in the calendar will be made bolder, as an indicator.
  211. X.sp
  212. Daily reminders:
  213. X.br
  214. Constant reminders, things to remember to do. 
  215. A reminder of this type has a hollow box containing a "D" at the 
  216. front of the message.
  217. X.br
  218. X.TP
  219. X.B Date Borders
  220. X.br
  221. X.sp
  222. There are different types of borders on the dates in the calendar depending 
  223. on the types of reminders associated with each date.  A date that has any
  224. X"this day only" reminders will have a thick black border.  A date that has
  225. no "this day only" reminders but does have yearly, monthly, or weekly reminders
  226. will have a double line border.  A date which has no reminders (or daily
  227. reminders only -- since they are valid everyday) will have a thin border.
  228. X.TP
  229. X.B Menu Commands
  230. X.sp
  231. Available with the right mouse button, except when in the Reminders Window
  232. X(when the standard 
  233. X\fItextedit\fR 
  234. menu is available).
  235. X.sp
  236. Close with Save:
  237. X.br
  238. Close the window to the icon and save the reminders in the .monthtool file.
  239. X.sp
  240. Save:
  241. X.br
  242. Save the reminders in the .monthtool file.
  243. X.sp
  244. Reload:
  245. X.br
  246. Reload the reminders from the last version of the .monthtool file.
  247. X.sp
  248. Quit with Save:
  249. X.br
  250. Save the reminders in the .monthtool file and quit.
  251. X.sp
  252. Note that the standard frame menu (available when in the borders of any window)
  253. allows the user to quit without saving.  Resize, Redisplay, etc.
  254. are also available, as is usually the case.  Closing the window using the 
  255. standard frame menu or the L7 key automatically causes a save.  When
  256. the icon is reopened, a reload is automatically done if the file has been
  257. modified since the last save within monthtool.  Also, when the icon is
  258. reopened, the tool automatically jumps to today's reminders.
  259. X.sp
  260. X.TP
  261. X.B The .monthtool File
  262. X.br
  263. X.sp
  264. The reminders are kept in a file in the home directory called the .monthtool 
  265. file.   This file is kept in a format similar to that used by 
  266. X\fIautocall\fR, used
  267. to warn the user of impending appointments.  If this feature is required,
  268. the time for the appointments must be the first token of the message
  269. X(after the type indicator) and must be in the format hh:mm or h:mm, 24-hour
  270. time.
  271. X.sp
  272. XEach reminder is a line (of length 80 characters or less) in the .monthtool
  273. file in 
  274. the following format:
  275. X.sp
  276. X.ta +1i 
  277. m,d,y,tttt,s
  278. X.ta -1i
  279. X.sp
  280. where m is the one or two digit month number, d is the one or two digit date, y
  281. is the year (up to 4 digits), tttt is either 4 blanks (if no time is required)
  282. or 24 time in hhmm format, and s is the reminder message.   
  283. XFor yearly reminders, the
  284. y field is 0 (zero); for monthly reminders, the
  285. m field and the y field are 0 (zero); for daily reminders, the d field, the
  286. m field, and the y field are 0 (zero); for weekly reminders the d field is
  287. between 1 and 7 (indicating Sunday through Saturday), the m field is 99, and
  288. the y field is 0 (zero).
  289. X.SH AUTHORS
  290. X.ta +1.15i
  291. Sarah Metcalfe (with ideas from Mike Essex and Rich Burridge)
  292. X.SH FILES
  293. X$HOME/.monthtool
  294. X.SH SEE ALSO
  295. X\fIvcal\fR(1), \fIautocall\fR(1), \fItextedit\fR(1), \fIsuntools\fR(1)
  296. X.LP
  297. X\fI"Windows and Window-Based Tools: Beginner's Guide"\fR
  298. X.SH DIAGNOSTICS
  299. Monthtool warning! Invalid record: \fIrecord\fR 
  300. X.br
  301. Monthtool error:  Cannot open \fI~/.monthtool\fR file
  302. X.SH BUGS
  303. Although the .monthtool file has a similar format to
  304. the .appointments file of \fIvcal\fR, 
  305. X\fIvcal\fR cannot support the yearly, monthly, weekly, or daily reminders.  
  306. If vcal
  307. is used on the file, reminders of that type will be lost.
  308. X.sp
  309. Unpredictable things may happen when using the "Undo" key.
  310. X.sp
  311. When the notes have been modified, but the mouse 
  312. hasn't yet been moved out of the notes window, and the L7 key is used to 
  313. close the window, the updates will be lost.
  314. END_OF_FILE
  315. if test 6640 -ne `wc -c <'monthtool.1'`; then
  316.     echo shar: \"'monthtool.1'\" unpacked with wrong size!
  317. fi
  318. # end of 'monthtool.1'
  319. fi
  320. if test -f 'monthtool.font.uu' -a "${1}" != "-c" ; then 
  321.   echo shar: Will not clobber existing file \"'monthtool.font.uu'\"
  322. else
  323. echo shar: Extracting \"'monthtool.font.uu'\" \(5719 characters\)
  324. sed "s/^X//" >'monthtool.font.uu' <<'END_OF_FILE'
  325. begin 644 monthtool.font
  326. M 1X&%0 '  \                                                 
  327. M                                                            
  328. M                                                            
  329. M                                                            
  330. M                                            #PH%  < !P /  \*
  331. M!0 '  < '@ /"@4 !P ' "T #PH%  < !P                          
  332. M                                                            
  333. M                     #P #PH%  < !P!+  \*!0 '  < 6@ /"@4 !P '
  334. M &D #PH%  < !P!X  \*!0 '  < AP /"@4 !P ' )8 #PH%  < !P"E  \*
  335. M!0 '  < M  /"@4 !P ' ,, #PH%  < !P#2  \*!0 '  < X0 /"@4 !P '
  336. M /  #PH%  < !P#_  \*!0 '  <!#@ /"@4 !P ' 1T #PH%  < !P$L  \*
  337. M!0 '  <!.P /"@4 !P ' 4H #PH%  < !P%9  \*!0 '  <!:  /"@4 !P '
  338. M 7< #PH%  < !P&&  \*!0 '  <!E0 /"@4 !P ' :0 #PH%  < !P&S  \*
  339. M!0 '  <!P@ /"@4 !P ' =$ #PH%  < !P'@  \*!0 '  <![P /"@4 !P '
  340. M ?X #PH%  < !P(-  \*!0 '  <"'  /"@4 !P ' BL #PH%  < !P(Z  \*
  341. M!0 '  <"20 /"@4 !P ' E@ #PH%  < !P)G  \*!0 '  <"=@ ."@0 !P '
  342. M H0 #PH%  < !P*3  \*!0 '  <"H@ /"@4 !P ' K$ #PH%  < !P+   \*
  343. M!0 '  <"SP /"@4 !P ' MX #PH%  < !P+M  X*!  '  <"^P /"@4 !P '
  344. M PH #PH%  < !P,9  \*!0 '  <#*  /"@4 !P ' S< #PH%  < !P-&  \*
  345. M!0 '  <#50 /"@4 !P ' V0 #PH%  < !P-S  \*!0 '  <#@@ /"@4 !P '
  346. M Y$ #PH%  < !P.@  \*!0 '  <#KP /"@4 !P ' [X #PH%  < !P/-  \*
  347. M!0 '  <#W  /"@4 !P ' ^L #PH%  < !P/Z  \*!0 '  <$"0 /"@4 !P '
  348. M!!@ #PH%  < !P0G  \*!0 '  <$-@ /"@4 !P '!$4 #@H$  < !P13  \*
  349. M!0 '  <$8@ /"@4 !P '!'$ #PH%  < !P2   \*!0 '  <$CP /"@4 !P '
  350. M!)X #PH%  < !P2M  \*!0 '  <$O  /"@4 !P '!,L #PH%  < !P3:  \*
  351. M!0 '  <$Z0 /"@4 !P '!/@ #PH%  < !P4'  \*!0 '  <%%@ /"@4 !P '
  352. M!24 #PH%  < !P4T  \*!0 '  <%0P /"@4 !P '!5( #PH%  < !P5A  \*
  353. M!0 '  <%<  /"@4 !P '!7\ #PH%  < !P6.  \*!0 '  <%G0 /"@4 !P '
  354. M!:P #PH%  < !P6[  \*!0 '  <                                 
  355. M                                                            
  356. M                                                            
  357. M                                                            
  358. M              7*  \*!0 '  <%V0 /"@4 !P '!>@ #PH%  < !P7W  \*
  359. M!0 '  <&!@ /"@4 !P '                                        
  360. M                                                            
  361. M                                                            
  362. M                                                            
  363. M                                                            
  364. M                                                            
  365. M                                                            
  366. M                                                            
  367. M                                                            
  368. M                                                            
  369. M                                                            
  370. M                                                            
  371. M                                                            
  372. M                                                            
  373. M                                                            
  374. M                                                            
  375. M                                                            
  376. M                                                            
  377. M                                                            
  378. M                                                            
  379. M                                                            
  380. M                                                            
  381. M                                                            
  382. M                                                            
  383. M                                                            
  384. M                                                 ! 0$! 0$   
  385. M$        "@H*                "@H?"@H*'PH*       $! \1$ P& 1$
  386. M>! 0     #!(2C0($"Q2$@P      !@D(! P2D1$.@        @($       
  387. M        "! 0(" @(" 0$ @     (! 0" @(" @0$"         05#A4$   
  388. M             ! 0?! 0                   8" @0            _@  
  389. M                   8&         0$" @0$" @0$       #A$1$1$1$1$
  390. M.        ! P4! 0$! 0?        #A$1 0($"!$?        #A$! 08! 1$
  391. M.         0,%"1$?@0$#@       #P@(#@D! 1$.        !P@0%AD1$1$
  392. M.        'Q$! @($! 0$        #A$1$0X1$1$.        #A$1$1,- 0(
  393. M<            !@8   8&            !@8   8" @0       $"! @0" 0
  394. M" 0           !\ 'P           ! (! (! @0($       #A$1 0($   
  395. M$        !@D0DY24DQ (AP      ' 0*"@H1'Q$Q@       '@D)"0X)"(B
  396. M?        #Q$0$! 0$!$.        '@D(B(B(B(D>        'XB("0\)" B
  397. M?@       'XB("0\)" @<       /$1 0$!.1$0X        [D1$1'Q$1$3N
  398. M        ?! 0$! 0$!!\        / @(" @(2$@P        9B0H,"@H)"1F
  399. M        <" @(" @(")^        QD1L;%141$3&        SD1D9%143$SD
  400. M       X9$1$1$1$3#@       !\(B(B/" @('         X1$1$1$1$1#@0
  401. M* 8   !\(B(B/"@D)&8        \1$! . 0$1'@       #^DA 0$! 0$'P 
  402. M      #N1$1$1$1$1#@       #N1$0H*"@0$!        #N1$145&PH*"@ 
  403. M      #N1"@H$"@H1.X       #N1$0H*! 0$#@       !^0@0($"! 0GX 
  404. M     #P@(" @(" @(" \      ! 0" @$! (" 0$     #P$! 0$! 0$! 0\
  405. M       0*$0                              /X    0$ @         
  406. M           X!#Q$1#H       # 0$!89$1$9-@            \1$! 1#@ 
  407. M       ,! 0T3$1$3#8            X1'Q 1#@       X0$'P0$! 0?   
  408. M         #9,1$1,- 0$.    ,! 0%AD1$1$[@       ! 0 ' 0$! 0?   
  409. M      @( '@(" @(" @(<    & @("8D*#@D9@       ' 0$! 0$! 0?   
  410. M         *A45%145            -AD1$1$[@           #A$1$1$.   
  411. M         -AD1$1D6$! X        #9,1$1,- 0$#@       &PR(" @<   
  412. M         #Q$, A$>        ! 0$'P0$! 0#            ,Q$1$1,-@  
  413. M         .Y$*"@0$            .Y$5%0H*            &8D&!@D9@  
  414. M         .Y$1"@H$! @\        'Q($"!$?       #! 0$!!@$! 0$ P 
  415. M   0$! 0$! 0$! 0$! 0$!  8! 0$! ,$! 0$&       #):3           
  416. M    _O[^_O[^_O[^_O[^    _H*"JJJ2DI*"@H+^    _H*"JKJJJJJ"@H+^
  417. X@    _H*"JJJJNKJJ@H+^    _H*"LJJJJJJR@H+^    
  418. end
  419. END_OF_FILE
  420. if test 5719 -ne `wc -c <'monthtool.font.uu'`; then
  421.     echo shar: \"'monthtool.font.uu'\" unpacked with wrong size!
  422. fi
  423. # end of 'monthtool.font.uu'
  424. fi
  425. if test -f 'monthtool.h' -a "${1}" != "-c" ; then 
  426.   echo shar: Will not clobber existing file \"'monthtool.h'\"
  427. else
  428. echo shar: Extracting \"'monthtool.h'\" \(2541 characters\)
  429. sed "s/^X//" >'monthtool.h' <<'END_OF_FILE'
  430. X/*  @(#)monthtool.h    5.1 2/20/88 */
  431. X
  432. X/*
  433. X     Name:        monthtool
  434. X  
  435. X    Purpose:     visual appointment calendar 
  436. X  
  437. X    Author:        Sarah Metcalfe apres Mike Essex & Rich Burridge
  438. X  
  439. X    Discussion: Displays a calendar to the screen for a given month.  
  440. X                User may move the mouse to any day of the
  441. X                month and view or enter appointments for that date. 
  442. X
  443. X*/
  444. X
  445. X#include <stdio.h>
  446. X#include <ctype.h>
  447. X#include <sys/types.h>
  448. X#include <sys/stat.h>
  449. X
  450. X#include <suntool/sunview.h>
  451. X#include <suntool/canvas.h>
  452. X#include <suntool/panel.h>
  453. X#include <suntool/walkmenu.h>
  454. X#include <suntool/textsw.h>
  455. X
  456. char *sprintf() ;
  457. char *malloc() ;
  458. char *strcat();
  459. char *strtok();
  460. char *getenv();
  461. X
  462. X
  463. X
  464. X#define  LARGEFONT        "/usr/lib/fonts/fixedwidthfonts/gallant.r.10"
  465. X#define  NORMALFONT        "/monthtool.font"
  466. X
  467. X
  468. X#define  MAX_MSG_LEN        1024        /* Maximum length of appt. messages */
  469. X
  470. X#define  DATE_ROWS            6            /* No of rows of dates. */
  471. X#define  DATE_COLS            7            /* No of columns of dates. */
  472. X
  473. X#define  DATE_BOX_HEIGHT    26            /* Number of pixels for height. */
  474. X#define  DATE_BOX_WIDTH        40            /* No of pixels for width. */
  475. X#define  DATE_BORDER        5            /* No of pixels in border. */
  476. X#define  GAP                5            /* No of pixels between dates. */
  477. X
  478. X#define  BTN_WIDTH            21            /* No of pixels in up and down buttons. */
  479. X#define  BTN_HEIGHT            19            /* No of pixels in up and down buttons. */
  480. X
  481. X
  482. X#define  WINDOW_WIDTH    (DATE_COLS * DATE_BOX_WIDTH) + \
  483. X                        ((DATE_COLS - 1) * GAP) + (2 * DATE_BORDER)
  484. X#define  MONTH_HEIGHT        35            
  485. X#define  DATES_HEIGHT   (DATE_ROWS * DATE_BOX_HEIGHT) + \
  486. X                        ((DATE_ROWS - 1) * GAP) + (2 * DATE_BORDER)
  487. X#define  NOTES_PANEL_HEIGHT    20            
  488. X#define  NOTES_HEIGHT        100            
  489. X
  490. X
  491. X#define  NUM_NOTES_TYPE        5                /* Types of records value */
  492. X#define  NOTES_D_M_Y        0                /* ddmmyyyy */
  493. X#define  NOTES_D_M_ALL        1                /* ddmm* */
  494. X#define  NOTES_D_ALL_ALL    2                /* dd** */
  495. X#define  NOTES_WEEKLY        3                /* dd99* */
  496. X#define  NOTES_ALL_ALL_ALL    4                /* *** */
  497. X#define  NOTES_ERROR        NUM_NOTES_TYPE    /* *mmyy **yy dd*yy *mm* */
  498. X
  499. X
  500. X#define  NO_OUTLINE            0                /* dateBox.hasNotes values */
  501. X#define  HALF_OUTLINE        1
  502. X#define  FULL_OUTLINE        2
  503. X
  504. X
  505. X#define  MENU_CLOSE            1                /* Menu selection value */
  506. X#define  MENU_SAVE            2
  507. X#define  MENU_RELOAD        3
  508. X#define  MENU_QUIT            4
  509. X
  510. X
  511. X#define  HIGHLIGHT            1
  512. X#define  NOHIGHLIGHT        0
  513. X
  514. struct dateBox {
  515. X            int          date ;
  516. X            int            boxOutline ;
  517. X} ;
  518. X
  519. struct apptsData {
  520. X            int                   year ;
  521. X            int                   month ;
  522. X            int                   day ;
  523. X            int                   dateNum ;    /* 10000*year + 100*month + day */
  524. X            int                   time ;
  525. X            char                  *apptMsg ;
  526. X            struct apptsData    *next ; 
  527. X            struct apptsData    *prev ; 
  528. X} ;
  529. END_OF_FILE
  530. if test 2541 -ne `wc -c <'monthtool.h'`; then
  531.     echo shar: \"'monthtool.h'\" unpacked with wrong size!
  532. fi
  533. # end of 'monthtool.h'
  534. fi
  535. echo shar: End of archive 1 \(of 2\).
  536. cp /dev/null ark1isdone
  537. MISSING=""
  538. for I in 1 2 ; do
  539.     if test ! -f ark${I}isdone ; then
  540.     MISSING="${MISSING} ${I}"
  541.     fi
  542. done
  543. if test "${MISSING}" = "" ; then
  544.     echo You have unpacked both archives.
  545.     rm -f ark[1-9]isdone
  546. else
  547.     echo You still need to unpack the following archives:
  548.     echo "        " ${MISSING}
  549. fi
  550. ##  End of shell archive.
  551. exit 0
  552.